package com.freshman_registration.mapper;

import com.freshman_registration.pojo.Students;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

@Mapper
public interface StudentMapper {
    //    添加管理员
    int insertStudent(Students student);
    //   通过学号查询学生信息
    Students queryStudentByStudentId(String studentId);

    //   修改学生信息
    int updateStudent(Students student);
    //    删除学生信息
    int deleteStudent(Integer id);
    //    查询所有学生信息
    List<Students> queryAllStudents();

    //根据学号和密码登录学生账号
    Students loginStudent(@Param("studentId") String studentId, @Param("password") String password);

    //批量删除
    int deleteBatchStudent(List<Integer> ids);
    //状态更新
    int updateStatusStudent(@Param("id") Integer id, @Param("accountStatus") String accountStatus);
    //条件分页查询
    List<Students> queryStudents(
            @Param("accountStatus") Integer accountStatus,
            @Param("studentId") String studentId,
            @Param("name") String name
    );

    //更改头像
    int updatePhoto(@Param("studentId") String studentId, @Param("photo") String photo);

    //更改密码
    int updatePassword(@Param("studentId") String studentId, @Param("password") String password);

    //通过学号修改信息
    int updateStudentByStudentId(Students student);












    int updateByPrimaryKey(Students record);

    Students selectByStudentId(@Param("studentId") String studentId);
    // 新增：更新学生表的宿舍ID和分配时间（接收外部时间参数）
    int setDormIdWithAllocateTime(
            @Param("studentId") String studentId,
            @Param("dormId") Long dormId,
            @Param("allocateTime") Date allocateTime
    );
    int updateCheckInTime(@Param("studentId") String studentId, @Param("checkInTime") Date checkInTime);
//    // 用于更新学生表的宿舍ID和入住时间
//    int setDormId(@Param("studentId") String studentId, @Param("dormId") Long dormId);

    // 批量清空学生的 dorm_id（退宿用）
    int batchClearDorm(@Param("dormIds") List<Long> dormIds);

    //    根据学生姓名和ID查询
    Students selectByStudentIdAndName(
            @Param("studentId") String studentId,
            @Param("name") String name
    );


}
